From 1531a8e9b91b567979a2a0d7fd6a4c2e9126b01c Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Wed, 6 Mar 2019 23:06:54 +0100
Subject: [PATCH] fix build without GNU libiconv

iconvctl is only defined in GNU libiconv so check for the availability
of this function before using it

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
[Upstream status: https://github.com/OISF/libhtp/pull/193]
---
 configure.ac         | 18 ++++++++++++++++++
 htp/htp_transcoder.c |  2 +-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 7f0a58d..388ec7b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -155,6 +155,24 @@ sinclude(m4/lib-link.m4)
 sinclude(m4/lib-prefix.m4)
 AM_ICONV
 
+# iconvctl is not standard, it is defined only in GNU libiconv
+AC_MSG_CHECKING(for iconvctl)
+TMPLIBS="${LIBS}"
+LIBS="${LIBS} ${LIBICONV}"
+
+AC_TRY_LINK([#include <stdlib.h>
+             #include <iconv.h>],
+            [int iconv_param = 0;
+             iconv_t cd = iconv_open("","");
+             iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, &iconv_param);
+             iconv_close(cd);],
+            [ac_cv_func_iconvctl=yes])
+AC_MSG_RESULT($ac_cv_func_iconvctl)
+if test "$ac_cv_func_iconvctl" == yes; then
+    AC_DEFINE(HAVE_ICONVCTL,1,"Define to 1 if you have the `iconvctl' function.")
+fi
+LIBS="${TMPLIBS}"
+
 dnl -----------------------------------------------
 dnl Check and enable the GCC opts we want to use.
 dnl We may need to add more checks
diff --git a/htp/htp_transcoder.c b/htp/htp_transcoder.c
index 57ff74c..d8e8280 100644
--- a/htp/htp_transcoder.c
+++ b/htp/htp_transcoder.c
@@ -64,7 +64,7 @@ int htp_transcode_params(htp_connp_t *connp, htp_table_t **params, int destroy_o
         return HTP_ERROR;
     }
 
-    #if (_LIBICONV_VERSION >= 0x0108)
+    #if (_LIBICONV_VERSION >= 0x0108 && HAVE_ICONVCTL)
     int iconv_param = 0;
     iconvctl(cd, ICONV_SET_TRANSLITERATE, &iconv_param);
     iconv_param = 1;
-- 
2.14.1

